#ifndef SELECTION_H_
#define SELECTION_H_

#include <vector>
#include "../Solution/Solution.h"
using namespace std;

/** Base class for selection styles.
 */
class Selection
{
	public:
		virtual void select(Solution* &, Solution* &) = 0; /**< Abstract selection function */
		virtual void prepare(vector<Solution*>) = 0;       /**< Abstract prepare function   */
		virtual ~Selection() { };
	protected:
		virtual void clean() = 0;                          /**< Abstract clean function     */
};

#endif /*SELECTION_H_*/
